Generating a frequency hopping arrangement for a communication session involving a group of devices

ABSTRACT

Methods, apparatus, and processor-readable storage media for generating a frequency hopping arrangement are provided herein. An example computer-implemented method includes determining a starting frequency channel for a frequency hopping arrangement to be used in a communication session by a designated group of devices; calculating a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group; and selecting the frequency channel values to be used in the communication session by iterating through frequency channel values for the useable frequency channels at intervals of a random frequency channel selection offset value until a number of frequency channel values equal to the frequency channel step value are selected.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent application Ser. No. 16/363,722, filed Mar. 25, 2019, which claims priority to U.S. Provisional Application Ser. No. 62/648,149, filed Mar. 26, 2018, which is incorporated by reference herein. Additionally, the present application is related to U.S. patent application Ser. No. 16/363,718, entitled “Pairing Multiple Devices Into a Designated Group for a Communication Session” and filed Mar. 25, 2019, and U.S. patent application Ser. No. 16/363,727, entitled “Generating Transmission Arrangements for Device Group Communication Sessions” and filed Mar. 25, 2019, both of which are incorporated by reference herein.

FIELD

The field relates generally to information technology, and more particularly to network communication management.

BACKGROUND

Connecting devices and transmitting information among and/or between the devices in a network faces numerous challenges in conventional approaches. For example, latency issues are common due, in part, to geographic variables. Additionally, interference issues can arise when multiple devices are attempting to transmit information within the same relative area and/or proximity. Further, regulatory requirements and a need to coordinate with a central registry of channel use can often limit the scope of one or more communication-related parameters. Accordingly, a need exists for improvements over conventional network communication approaches.

SUMMARY

Illustrative embodiments of the disclosure provide techniques for generating a frequency hopping arrangement for a communication session involving a group of devices. An example computer-implemented method includes determining a starting frequency channel for a frequency hopping arrangement to be used in a communication session by a designated group of devices based at least in part on a random start offset value and frequency channel spacing information. Such a method also includes calculating a number of useable frequency channels between the starting frequency channel and a stopping frequency channel for the frequency hopping arrangement. Additionally, such a method includes calculating a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group, and selecting the frequency channel values to be used in the communication session by the designated group of devices by iterating through frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of a random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected. Further, such a method includes establishing the frequency hopping arrangement as a sequence of the selected frequency channel values.

In another embodiment, an example system includes a communications network and multiple processing devices in a designated group. In such a system, a first of the multiple processing devices is configured to generate a random start offset value for a frequency hopping arrangement to be used in a communication session by the designated group of processing devices, and output, via the communications network, the random start offset value to the other processing devices in the designated group. Additionally, the first processing device is also configured to generate a random frequency channel selection offset value, wherein the random frequency channel selection offset value is not a divisor of a number of useable frequency channels between a starting frequency channel and a stopping frequency channel, and output, via the communications network, the random frequency channel selection offset value to the other processing devices in the designated group. Further, the first processing device is additionally configured to calculate a frequency channel value for each of multiple useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the number of useable frequency channels, and output, via the communications network, the calculated frequency channel value for each of the useable frequency channels to the other processing devices in the designated group.

Also, in such a system, each of the multiple processing devices is configured to determine the starting frequency channel based at least in part on the random start offset value and frequency channel spacing information, and calculate a frequency channel step value as the lowest integer value that (i) is greater than a predetermined required minimum number of frequency channels and (ii) is coprime with the number of processing devices in the designated group. Additionally, in such a system, each of the multiple processing devices is also configured to select the frequency channel values to be used in the communication session by the designated group of processing devices by iterating through the frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of the random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value is selected, and establish the frequency hopping arrangement as a sequence of the selected frequency channel values.

Illustrative embodiments can provide significant advantages relative to conventional network communication approaches. For example, common challenges associated with conventional approaches (such as noted above) are overcome by one or more embodiments via increasing immunity to interference and ensuring that a given collection of frequency channel values is unique to a designated group of devices and unique to that single instance of a group of devices of that size. Additionally, implementation of one or more embodiments render communications less prone to interference and/or interception.

These and other illustrative embodiments described herein include, without limitation, methods, apparatus, networks, systems and processor-readable storage media.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a network configured for user device communication in an example embodiment;

FIG. 2 is a diagram illustrating a table of hopping frequencies in an example embodiment;

FIG. 3 is a diagram illustrating a table of active hopping frequencies in an example embodiment;

FIG. 4 is a diagram illustrating a table of sorted active hopping frequencies in an example embodiment; and

FIG. 5 is a flow diagram of a process for generating a frequency hopping arrangement for a communication session involving a group of devices in an illustrative embodiment.

DETAILED DESCRIPTION

As detailed herein, one or more embodiments include generating a frequency hopping arrangement for a communication session involving a group of devices. Further, in at least one embodiment, pairing logic used to pair the devices into a designated group depends on a temporal value (such as a timestamp, for example) and a code. Additionally, in such an embodiment, the pairing yields a common frequency hopping schedule applicable to the paired devices, and this schedule is shared with the paired devices (for example, shared in an encoded manner). Also, in one or more embodiments, a time-slotted response queue is negotiated among the paired devices, wherein the slot queue defines the relevant device identifier (ID) and the type of data being transmitted. Accordingly, each time slot implicitly addresses a device and implicitly specifies the type of data in question.

As used herein, spread spectrum frequency hopping, also known as frequency-hopping spread spectrum (FHSS), refers to a method of transmitting radio signals by switching a carrier among multiple frequency channels, using a pseudo-random sequence known to both the transmitter and the receiver. The frequency channels used are referred to as a “hop set,” and include a set of channels selected from all available bandwidths over which the transmitter and receiver will switch (that is, “hop”) during the course of sending data.

At least one embodiment includes generating and implementing a radio protocol and broadcast schema designed based on an intention to return (for users of the relevant user devices), user experience considerations, and limits on power, bandwidth and temporal variables associated with user devices. Additionally, in one or more embodiments, such groups of two or more devices transmit data packets to each other during a given session, wherein the data packets contain geo-location information identifying the positioning/location of the devices. Further, as detailed herein, at least one embodiment includes permitting devices to pair together in a variety of different locations, each with (potentially) different specific regulatory requirements, without requiring a central registry of channel use.

Example and/or illustrative embodiments of the disclosure will be described herein with reference to exemplary networks and associated computers, servers, network devices or other types of processing devices. It is to be appreciated, however, that the invention is not restricted to use with the particular illustrative network and device configurations shown. By way of example, the term “network” as used herein is intended to be broadly construed, so as to encompass, for example, any system comprising multiple networked processing devices.

FIG. 1 shows a network 100 configured in accordance with an example embodiment. The network 100 includes a plurality of user devices 102-1, 102-2, 102-3, . . . 102-K, collectively referred to herein as user device(s) 102. The user devices 102 are coupled to a network 104, where the network 104 in such an embodiment is assumed to represent a sub-network or other related portion of the larger network 100. Accordingly, elements 100 and 104 are both referred to herein as examples of “networks,” but element 104 is assumed to be a component of element 100 in the context of the FIG. 1 embodiment.

The user devices 102 can include, for example, location data tracking hardware devices, as well as mobile telephones or smart phones, laptop computers, tablet computers, desktop computers or other types of computing devices. The user devices 102, as illustrated in FIG. 1, can connect (wirelessly or via a hard-wired connection) to each other via network 104. Accordingly, an example embodiment such as that depicted in FIG. 1 includes location data tracking hardware devices (102) wirelessly connected to each other via network 104.

Referring again to FIG. 1, in one or more embodiments, each user device 102 is assumed to be implemented using at least one processing device. Each such processing device generally includes at least one processor and at least one associated memory, and implements one or more functional software modules or components for controlling certain features of the user device 102. Also, in at least one embodiment, each user device 102 can be coupled to and/or contain therein a power source such as, for example, a battery.

In the example embodiment illustrated in FIG. 1, the user devices 102 each include a processor 120 coupled to a memory 122 and a network interface 124.

The processor 120 can include, for example, a microprocessor, a microcontroller, an application-specific integrated circuit, a field-programmable gate array or other type of processing circuitry, as well as portions or combinations of such circuitry elements.

The memory 122 can include, for example, random access memory (RAM), read-only memory (ROM) or other types of memory, in any combination. The memory 122 and other memories disclosed herein can also be viewed as examples of processor-readable storage media, which can store executable computer program code and/or other types of software programs.

Examples of such processor-readable storage media can include, by way merely of example and not limitation, a storage device such as a storage disk, a storage array or an integrated circuit containing memory, as well as a wide variety of other types of computer program products. The term “processor-readable storage media” as used herein should be understood to exclude transitory, propagating signals.

The network interface 124 allows the user devices to communicate over the network 104 with one or more other user devices 102, and can include, for example, one or more conventional transceivers.

Additionally, in one or more embodiments, the user devices 102 can be coupled to one or more additional devices such as mobile telephones, laptop computers, tablet computers, desktop computers or other types of computing devices.

As further detailed herein, two or more of the user devices 102, in one or more embodiments, can be coupled to each other to form an associated grouping (also referred to herein as a “squad”). Numerous other operating scenarios involving a wide variety of different types and arrangements of processing devices and networks are possible, as will be appreciated by those skilled in the art.

Also, it is to be appreciated that the term “user” herein is intended to be broadly construed so as to encompass, for example, human, hardware, software or firmware entities, as well as various combinations of such entities.

The network 104 is assumed to include a portion of a global computer network such as the Internet, although other types of networks can be part of the network 100, including a wide area network (WAN), a local area network (LAN), a satellite network, a telephone or cable network, a cellular network, a wireless network such as a LoRa, LoRa-WAN, Sigfox or other LPWAN network, a Wi-Fi, or WiMAX network, or various portions or combinations of these and other types of networks. Also, the network 100, in one or more embodiments, can include combinations of different types of networks, each including processing devices configured to communicate using internet protocol (IP) or other related communication protocols.

Each user device 102 has an associated database 106 configured to store data related to communications among and between user devices 102. The database 106 more particularly stores pairing data 107, which can include information about which user devices are paired together in squad for a given session, hop sequence data 108, which can include information pertaining to the frequency channels (and order of use thereof) used in a given squad session, and geo-location data 109, which can include position information associated with the user device 102 (and/or one or more other user devices 102 in a squad).

In at least one embodiment, database 106 can be implemented using one or more storage systems associated with the corresponding user device 102. Such storage systems can comprise any of a variety of types of storage including network-attached storage, storage area networks, direct-attached storage and distributed direct-attached storage, as well as combinations of these and other storage types, including software-defined storage.

Referring again to the depiction of user devices, the processor 120 can also include a device pairing component 130, a hopping sequence generator 132, and a packet generator 134.

It is to be appreciated that this particular arrangement of modules 130, 132 and 134 illustrated in the processor 120 of the FIG. 1 embodiment is presented by way of example only, and alternative arrangements can be used in one or more other embodiments. For example, the functionality associated with the modules 130, 132 and 134 in other embodiments can be combined into a single module, or separated across a number of modules. By way of further example, multiple distinct processors can be used to implement different ones of the modules 130, 132 and 134, or portions thereof.

Also, at least portions of the device pairing component 130, hopping sequence generator 132, and packet generator 134 can be implemented at least in part in the form of software that is stored in memory 122 and executed by processor 120.

Further, example processes utilizing device pairing component 130, hopping sequence generator 132, and packet generator 134 of the user devices 102 in network 100 is further described herein.

It is to be understood that the particular set of elements shown in FIG. 1 for communication techniques involving user devices 102 of network 100 is depicted by way of illustrative example only, and in one or more other embodiments, additional or alternative elements may be used.

At least one embodiment includes pairing devices to form a group (also referred to herein as a squad). In pairing, information is exchanged between two or more devices. Such information can include the number of devices in the (desired) paired squad of devices. By way of illustration, assume that a number of devices—say, four—make a pairing request, wherein each of the devices indicates that it is attempting to pair with three other devices (to form a squad of four devices). As such, in at least one embodiment, a pairing algorithm is carried out by each of the devices, and the pairing algorithm searches for other devices that have recently made a pairing request for the same number of (squad) devices. In one or more embodiments, the pairing algorithm can also apply one or more filtering techniques, filtering based on parameters such as time and/or radio signal strength.

By way merely of illustration, the following includes an example of a pairing sequence involving multiple user devices (such as user devices 102). After a power-on or reset operation, a user is prompted via a user device to enter a pairing mode and/or operation. Additionally, the user device confirms that it has the coordinated universal time (UTC). If not (that is, the UTC is not available), an error message is displayed via the user device (for example, such a message can indicate “need sky view to begin pairing”). Assuming that the user device has the UTC, the user device prompts the user to enter the number of additional user devices desired for the group (also referred to herein as “squad”).

Subsequently, the user device enters a pairing mode of operation, which includes the user device switching to a radio setting designated exclusively for pairing. By way merely of example, such a setting can include particular LoRa modem settings within categories of spreading factor, bandwidth, coding rate, low data rate and transmission power and frequency. For instance, the spreading factor can be set to approximately seven, the bandwidth can be set to 500 kilohertz (kHz), the coding rate (also referred to as error correction) can be set to a maximum of 4/8, the low data rate optimization can be set to “OFF,” the frequency can be set to 925 megahertz (MHz), and transmission power can be set to 5 decibels (dB). Additionally, in one or more embodiments, the front-end module (FEM) settings associated with the user device in this setting can include the low noise amplifier being set to “OFF,” and the power amplifier being set to “OFF.” Further, in such an embodiment, packet configurations for the user device in such a setting can include a particular programmed preamble, preamble length, header mode (explicit/implicit), cyclic redundancy check (CRC) enable/disable designation, etc. For instance, in at least one embodiment, pairing settings include a header mode that is explicit, and CRC that is disabled (while an internal checksum mechanism may still be used).

Also, with respect to the radio setting designated exclusively for pairing, the user device can initialize a number of exit conditions. By way of example, the user device can implement a pairing timeout timer (via a scheduler), wherein such a timer can encompass approximately one minute, for instance. Additionally, the user device can implement a pairing group size parameter, wherein the pairing operation is completed/exited upon the pairing of the specified number of devices.

While exiting conditions are not met, the user device begins or continues the pairing protocol, which includes a multicasting node discovery procedure. In the multicasting node discovery procedure, in accordance with one or more embodiments, each user device in a group/squad begins alternately communicating and listening asynchronously. Each device listens only to those packets that are stronger than a predetermined received signal strength indicator (RSSI) threshold (for example, approximately −50, or whatever value provides an effective fade margin (such as 10 dB) when the devices are within a given distance (for example, 50 millimeters (mm) of each other). Each device builds a “discovery” table based on a unique device identifier (ID) received from remote devices (packets not meeting the RSSI threshold requirements are ignored). Additionally, for each device, once the number of unique devices in its discovery table is equal to the intended squad size, the device adds an acknowledgement message with this number to its broadcast as a “complete discovery table acknowledgement.” Further, in at least one embodiment, for each device, the multicasting node discovery procedure is complete only when the device has a complete discovery table as well as a “complete discovery table acknowledgement” from each of the other devices in the group/squad.

The user device exits/completes the pairing mode of operation by evaluating the pairing protocol scheme results. A successful pairing result can include the following. The user device generates and displays a prompt indicating a “successful pairing” message. Additionally, the user device updates one or more time-division multiplexing (TDM) variables, which are prerequisite for normal mode of operation, following the slot allocation and assignment mechanism associated with the completed pairing. Each device (in the paired group/squad) sorts the “discovery” table numerically based on device ID (for example, sorted low to high). In at least one embodiment, the sorted ordering of device IDs subsequently determines each device's chronological slot position and time to communicate and listen (during the subsequent group/squad communication session).

Also, in one or more embodiments, a preliminary radio frequency (RF) schema can include all devices sharing the same frequency, but utilizing time-division multiple access (TDMA). A production mode RF schema can include each device, knowing both (a) the number of devices/units in the group/squad and (b) its position within this list, consulting an internal list of frequencies known at compile time that govern when and at what frequency it may transmit.

Referring again to a successful pairing result, at least one embodiment also includes switching the mode of operation (for the devices in the group/squad) to “normal” mode (which can include group node “localization”); that is, the familiar mode of operation to the end user.

In contrast to the above-described embodiments, a failed pairing result can include the following. The user device generates and displays a prompt indicating a “failure pairing” message, optionally with a human-readable error explaining what went wrong during the pairing protocol. For example, if one of the user devices (in the group/squad) did not have UTC, such a failure message might indicate that “[number] other device(s) need(s) to have three minutes of sky view before the device(s) can be paired.” Additionally, if the intended/desired squad size entered by all of the relevant user devices does not agree (that is, the devices did not all enter the same number), a failure message might indicate that “you wanted to pair [number] units but at least one other user entered [different number].” If the number of user devices found and/or located was less than the “intended squad size,” a failure message might indicate that “You wanted to pair a total of [number] devices, but only [smaller number] devices were found. Try again, and make sure that all devices are in pairing mode.” Further, if the number of user devices found was more than the “intended squad size,” a failure message might indicate that “You wanted to pair a total of [number] devices, but [larger number] devices were found. Try again, and make sure to choose the correct total number of devices to be paired.”

Continuing with the above example of a squad of four units, subsequent to pairing, the system may set a minimum size to the hop set to be used in the communications transmitted within this squad. For example, in one or more embodiments, a hop set of at least 50 hopping channels is required to be used by a squad during a given squad session. In at least one embodiment, a squad session can persist indefinitely, until a device is shutdown or paired with other devices, or a different number of the same devices. Accordingly, in at least one embodiment, a leader device (from the given squad) can implement an algorithm to create a hop set to be used by all of the devices in the given squad during the given squad session. As further described herein, a “leader” device can include, for example, the first device from the given squad to submit its pairing request. After establishing the hop set for the squad session, the devices in the given squad will then iteratively, in a given order (for example, a round robin arrangement), transmit information using, iteratively in a given order, all of the frequency channels in the hop set.

By way merely of example and not limitation, consider a squad of four devices: Device1, Device2, Device3 and Device4. Also, in this example, assume that a hop set of five channels has been established by the lead device of the squad: ChannelA, ChannelB, ChannelC, ChannelD and ChannelE. Communication among the devices in this squad, per this example, can subsequently be carried out as follows: Device1 transmits geo-location information pertaining to Device1 on ChannelA (while Device2, Device3 and Device4 listen); Device2 transmits geo-location information pertaining to Device2 on ChannelB (while Device1, Device3 and Device4 listen); Device3 transmits geo-location information pertaining to Device3 on ChannelC (while Device1, Device2 and Device4 listen); Device4 transmits geo-location information pertaining to Device4 on ChannelD (while Device1, Device2 and Device3 listen); Device1 transmits geo-location information pertaining to Device1 on ChannelE (while Device2, Device3 and Device4 listen); Device2 transmits geo-location information pertaining to Device2 on ChannelA (while Device1, Device3 and Device4 listen); etc. Such an arrangement as detailed in the above example can also be referred to as time-division multiplexing. Further, the above example contains a sequential ordering of channels in the hop set, which is merely an example embodiment. The squad (or a leader device of the squad) can determine an alternate (or a random) ordering of the channels in the hop set in one or more embodiments. Additionally, as evidenced by the above example, in one or more embodiments, relatively even short- and long-term distribution of devices in the squad to channels in the hop set can be achieved.

Further, in one or more embodiments, each device in a given squad is informed of (by the leader device, for example) the sequence of devices (in the squad) with respect to communicating/transmitting information over the hop set. Also, each individual period/slot of communication/transmission in a squad session can be, in at least one embodiment, pre-designated as a certain duration of time. Accordingly, in such embodiments, each device in the squad can track and identify which device (in the squad) is communicating/transmitting at a given point in time based on the knowledge of the device sequence or the pre-designation temporal duration of each communication/transmission period/slot.

As detailed herein, one or more embodiments include implementing a frequency hopping spread spectrum system. By way merely of example and not limitation, in such an embodiment, each device can use LoRa modulation techniques over 902-928 MHz industrial, scientific, and medical radio band (ISM band; namely, the American ISM band; it is to be appreciated that bandwidth parameters can differ in other countries and/or jurisdictions) with frequency hopping spread spectrum, and can (generally) operate in various modes that can include a “normal” mode and a “pairing” mode.

In a normal mode, in accordance with one or more embodiments, a device can utilize a minimum of 50 hopping frequencies at 15 kHz bandwidth (BW). In such a mode, the transmit (TX) power level does not exceed a maximum of one watt (W). Additionally, in such a mode, the dwell time at any channel does not exceed 400 milliseconds (mS). The channel separation can be set to 25 kHz because the 20 dB BW of the hopping channel is less than 25 kHz.

In a pairing mode, in accordance with one or more embodiments, a device can utilize only one frequency but at 500 kHz. Additionally, in such a mode, the TX power can be configured not to exceed a maximum of 15 milliwatts (mW).

Also, in connection with at least one embodiment, for frequency hopping systems operating in the 902-928 MHz band, if the 20 dB bandwidth of the hopping channel is less than 250 kHz, the system shall use at least 50 hopping frequencies and the average time of occupancy on any frequency shall not be greater than 0.4 seconds within a 20 second period.

As described herein, one or more embodiments include generating a hopping sequence to be used in a squad session. By way merely of example, in such an embodiment, the modulation BW for every hopping frequency can be fixed at 15 kHz. The hopping list for operation over 902-928 MHz ISM band can be generated based on the number of devices in a squad N_(nodes) (minimum=2, example maximum =12) such that size of the hopping list is greater than 50 and exactly one less than a multiple of the squad size. Accordingly, in such an example embodiment, the following process can be carried out.

A start offset (F_(offset)) between 0 and 0.500, representing kHz, is randomly selected and/or generated to define the lowest hopping frequency. As such, (902.00+F_(offset)+channel spacing)=F_(start). This offset value is then shared between all devices in the squad.

Additionally, an example embodiment includes calculating the number of possible channels. Specifically, the number (N_(fstepLegal)) of legal hopping frequencies between F_(start) and F_(stop) (928.0—channel spacing) can be calculated via one or more functions (channel BW, channel spacing, etc.). Beginning with F_(start), at least one embodiment includes iteratively adding N_(fstepLegal) to calculate the frequency values of all possible channels. These frequencies can then be stored in a lookup table (referred to herein as “Legal F_(step) Values”) of size N_(fstepLegal) that can be indexed with an integer. Because all devices in the squad utilize the same offset value, each device's lookup table will be equal in size and contain the same frequency values for each table entry.

Also, one or more embodiments include, using one or more functions, calculating a value N_(fstepActive) as the lowest integer value that meets the following conditions: the value is higher than the legal minimum number of hopping frequencies required by a particular legal jurisdiction or technical context, and is also coprime with the number of units being paired, also referred to herein as “squad size.” For example, if the minimum number of hopping frequencies is 50, at least one embodiment includes determining the smallest multiple of the squad size that is greater than 50, and then adding one to that number.

At least one embodiment additionally includes producing R_(selectionOffset), which is a new random number that satisfies the following conditions: the number is not a divisor of N_(fstepLegal), and the number is between 25 and 50. In such an embodiment, R_(selectionOffset) is subsequently shared between all devices in the squad.

Also, beginning with index position zero (0), one or more embodiments include iterating through the index of table “Legal F_(step) Values” at intervals of R_(selectionOffset) to select the number of frequencies that will be used by the squad, and subsequently add these entries to a new lookup table (referred to herein as “Squad Frequencies”) which contains only these frequencies until a total of N_(fstepActive) frequencies are ultimately selected. In such an embodiment, the iterator can wrap around such that if the iterator value exceeds N_(fstepLegal), the iterator value is set to itself minus N_(fstepLegal). As used herein, an iterator refers to a programming operation that may traverse through an ordered set of data, such as a list, and select every N^(th) element, so that these elements can be copied, moved, reordered or otherwise manipulated.

By way merely of illustration, consider the following description of example hopping sequence channels, which are determined during the pairing process using a combination of user-inputted values such as, for example, squad size, geo-location-specific values relative to radio law (such as minimum hopping channels and channel spacing), and random values derived from random seed functions. Using techniques such as those detailed above, and for an example squad of size 12, the following values can be generated. Channel spacing, for example can be set at 25, equating to 25 kHz. For F_(offset), an example random value of 349 can be generated. The summation of these values (902.00+0.025+0.349) produces a value for F_(start) of 902.374. The calculated value for F_(offset) is shared among all devices in a squad, which is sufficient for each device to produce the same F_(start) value of 902.374. Additionally, in this example, a value of 649 is produced for N_(fstepLegal). Further, a table of all legal hopping frequencies can be produced that contains all legal hopping channels within the ISM bandwidth for the given parameters (BW and F_(offset)). An example of such a table is depicted in FIG. 2, which illustrates a table 200 of (legal) hopping frequencies in an example embodiment.

Continuing with the above example, based on the squad size of 12 devices, a value of 71 is calculated for N_(fstepActive), and a value of 27 is produced for R_(selectionOffset) by the lead pairing device and is shared with all other devices in the squad. A table of all active hopping frequencies produced that contains only those frequencies that will be used for the frequency hopping frequencies of the squad can be generated and implemented by each of the devices in the squad. An example of such a table is depicted in FIG. 3, which illustrates a table 300 of (active) hopping frequencies in an example embodiment.

In one or more embodiments, such a table (as depicted in FIG. 3, for example) of active hopping frequencies can be pseudo-randomly sorted, such that the direction and magnitude of the change from one hopping channel to another appears random. An example of such a sorted table is depicted in FIG. 4, which illustrates a table 400 of sorted active hopping frequencies in an example embodiment.

Also, in at least one embodiment, each individual device in a squad meets a requirement that each of the device's hopping channels is used equally on average (for example, that each new transmission event begins on the next channel in the hopping sequence after the final channel used in the previous transmission event). In such an embodiment, all devices in the squad transmit one at a time at even intervals in the same order, in a round robin fashion. After a first device (in the squad) finishes transmitting a packet, the device switches to the next frequency in the hopping list. A second device in the squad then transmits on the second frequency in the hop list. The third device in the squad then transmits on the third frequency in the hop list, and so on.

Because the number of frequencies in the hop list is one less or one more than an even multiple of the devices in the squad, each device in the squad will traverse through its entire hop list prior to using any hopping channel for the second time. Moreover, in such an embodiment, no device in the squad will use any hopping channel in the hop list for a second time until every device in the squad has used each hopping channel precisely once. This periodicity ensures that all hopping channels are used equally on average, as considered from the perspective of each device in the squad as well as considered from the perspective of the squad as a whole.

Also, in at least one embodiment, the receiver(s) associated with a squad and/or squad session has the ability to shift frequencies in synchronization with the transmitted signals. In such an embodiment, all devices in the squad except for the unit that is transmitting are considered receivers for the duration of time that another unit is transmitting. All devices in the squad can be equipped, for example, with a global navigation satellite system (GNSS) receiver, which can provide an accurate absolute reference to time. Each device in a squad, regardless of whether it is receiving or transmitting, is therefore able to shift frequencies in a synchronized manner.

Further, one or more embodiments include avoiding simultaneous occupancy of individual hopping frequencies by multiple transmitters. Because each squad shares a randomly generated F_(offset) value and a randomly generated F_(start) value, its table of frequency hopping frequencies is unique to the devices in the squad and unique to this single instance of a squad of that size. Accordingly, only those devices paired as a squad share this frequency hopping list. A squad of the same number of devices will necessarily have its own, unique frequency hopping list.

As detailed herein, at least one embodiment includes facilitating trade-offs between data throughput (bandwidth) and transmission range. For example, in an example embodiment, the rate of data throughput is decreased—making the data travel more slowly—the data can travel farther at the same cost and power.

One or more embodiments include generating and utilizing what are referred to herein as long packets and short packets. As used herein, long packets can travel greater distances than short packets, and long packets are transmitted at a lower rate of data throughput than are short packets. By way merely of illustration, consider again the example detailed above wherein a squad includes four devices communicating over a hop set of five channels. Communication among the devices in this squad, per a further example, can subsequently be carried out as follows: Device1 transmits a long packet (containing geo-location information pertaining to Device1) on ChannelA (while Device2, Device3 and Device4 listen); Device2 transmits a short packet (containing geo-location information pertaining to Device2) on ChannelB (while Device1, Device3 and Device4 listen); Device3 transmits a short packet (containing geo-location information pertaining to Device3) on ChannelC (while Device1, Device2 and Device4 listen); Device4 transmits a short packet (containing geo-location information pertaining to Device4) on ChannelD (while Device1, Device2 and Device3 listen); Device1 transmits a short packet (containing geo-location information pertaining to Device1) on ChannelE (while Device2, Device3 and Device4 listen); Device2 transmits a long packet (containing geo-location information pertaining to Device2) on ChannelA (while Device1, Device3 and Device4 listen); Device3 transmits a short packet (containing geo-location information pertaining to Device3) on ChannelB (while Device1, Device2 and Device4 listen); etc.

By way of example, if all devices only transmitted long packets, there could be perceivable latency in the squad communications. Additionally, transmitting short packets require less battery costs than do long packets because the short packets are on-air for less time than are long packets. In one or more embodiments, though, more precise geo-location information can be contained within short packets than within long packets (because the short packets are transmitted with a higher data rate). More precise geo-location information can be particularly useful to users within a close (or closer) proximity to each other, while such precision may be less useful for users that are farther away from each other. For instance, the farther away a user is, the less frequently that user may need to receive data from another user (with respect to where exactly that other user is located). Also, in one or more embodiments, users far enough away from each other might only receive transmissions of long packets.

Further, one or more embodiments include facilitating and/or enabling multiple different squads operating in the same area or general location without having to negotiate with respect to which squad uses which frequency. Such an embodiment also includes providing each squad with (or enabling a squad leader device to generate) a start offset that is generated from a random number. For example, assume a scenario involving two squads, both of the same size (that is, having the same number of devices in the squad), and both squads having the same number of channels in their hop set. In one or more embodiments, each of those channels can be distinct/different due to the random start offset used by each squad, as well as the manner in which each squad proceeds through their respective hop set (that is, the ordering of the channels that is selected and/or used by that particular squad).

Because, in one or more embodiments, the devices are de-centralized, a leader device of a squad can generate the random start offset as well as the custom or random channel order within the hop set, and subsequently inform the rest of the devices in the squad.

FIG. 5 is a flow diagram of a process for generating a frequency hopping arrangement for a communication session involving a group of devices in an illustrative embodiment. It is to be understood that this particular process is only an example, and additional or alternative processes can be carried out in other embodiments.

In this embodiment, the process includes steps 500 through 508. These steps are assumed to be performed by the processor 120 utilizing module 132.

Step 500 includes determining a starting frequency channel for a frequency hopping arrangement to be used in a communication session by a designated group of devices based at least in part on a random start offset value and frequency channel spacing information. At least one embodiment includes generating the random start offset value for the frequency hopping arrangement and outputting the random start offset value to the other devices in the designated group of devices.

Step 502 includes calculating a number of useable frequency channels between the starting frequency channel and a stopping frequency channel for the frequency hopping arrangement. Alternatively, one or more embodiments can include calculating a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group. Calculating the number of useable frequency channels can include implementing a function based at least in part on one or more of (i) frequency channel bandwidth information and (ii) the frequency channel spacing information. Step 504 includes calculating a frequency channel step value as the lowest integer value that (i) is greater than a predetermined required minimum number of frequency channels and (ii) is coprime with the number of devices in the designated group.

Step 506 includes selecting the frequency channel values to be used in the communication session by the designated group of devices by iterating through frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of a random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected. Step 508 includes establishing the frequency hopping arrangement as a sequence of the selected frequency channel values.

The techniques depicted in FIG. 5 can also include calculating the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the calculated number of useable frequency channels. Additionally, one or more embodiments can include determining the calculated frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel to the other devices in the designated group of devices, as well as storing, in a lookup table, the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel, wherein the lookup table is indexed with an integer.

Additionally, the techniques depicted in FIG. 5 can include generating the random frequency channel selection offset value that is not a divisor of the number of useable frequency channels between the starting frequency channel and the stopping frequency channel, as well as outputting the random frequency channel selection offset value to the other devices in the designated group of devices.

In one or more embodiments, the frequency channel values to be used in the communication session comprises frequency channel values between 902 megahertz and 928 megahertz. Further, in at least one embodiment, the frequency hopping arrangement comprises one or more usage parameters. Such usage parameters can include, for example, a requirement that each new transmission event in the communication session begins on the frequency channel value subsequent in the sequence to the frequency channel value used in an immediately preceding transmission event. Additionally, such usage parameters can include a requirement that devices in the designated group transmit one device at a time in a consistent order throughout the duration of the communication session. Further, such usage parameters can include a requirement that none of the devices in the designated group use any of the frequency channel values in the frequency hopping arrangement for a second time until all of the devices in the designated group have used each of the frequency channel values in the frequency hopping arrangement once.

Also, one or more embodiments include a system that includes a communications network and multiple processing devices in a designated group. In such a system, a first of the multiple processing devices is configured to generate a random start offset value for a frequency hopping arrangement to be used in a communication session by the designated group of processing devices, and output, via the communications network, the random start offset value to the other processing devices in the designated group. Additionally, the first processing device is also configured to generate a random frequency channel selection offset value, wherein the random frequency channel selection offset value is not a divisor of a number of useable frequency channels between a starting frequency channel and a stopping frequency channel, and output, via the communications network, the random frequency channel selection offset value to the other processing devices in the designated group. Further, the first processing device is additionally configured to calculate a frequency channel value for each of multiple useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the number of useable frequency channels, and output, via the communications network, the calculated frequency channel value for each of the useable frequency channels to the other processing devices in the designated group.

Also, in such a system, each of the multiple processing devices is configured to determine the starting frequency channel based at least in part on the random start offset value and frequency channel spacing information, and calculate a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group. Additionally, in such a system, each of the multiple processing devices is also configured to select the frequency channel values to be used in the communication session by the designated group of processing devices by iterating through the frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of the random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected, and establish the frequency hopping arrangement as a sequence of the selected frequency channel values.

In one or more embodiments of the invention, each of the multiple processing devices in such a system is further configured to store, in a lookup table, the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel, wherein the lookup table is indexed with an integer. Also, in at least one embodiment, in such a system, each of the processing devices in the designated group, when not transmitting, is capable of shifting frequency channel values in synchronization with a transmitted signal from another one of the processing devices in the designated group, and each of the processing devices in the designated group includes a global navigation satellite system receiver which provides an accurate absolute reference to time.

Other techniques can be used in association with one or more embodiments of the disclosure. Accordingly, the particular processing operations and other network functionality described in conjunction with the flow diagram of FIG. 5 and the techniques detailed herein are presented by way of illustrative example only, and should not be construed as limiting the scope of the invention in any way. For example, the ordering of the process steps may be varied in one or more other embodiments, or certain steps may be performed concurrently with one another rather than serially. Also, the process steps or subsets thereof may be repeated periodically in conjunction with respective distinct instances of squad sessions with respect to different users.

The above-described example embodiments provide significant advantages relative to conventional approaches. For example, one or more embodiments include creating and/or providing increased immunity to interference, preclusion of a need for a centralized communication requirement, as well as long range and low power capabilities.

It is to be appreciated that the foregoing advantages are illustrative of advantages provided in certain embodiments, and need not be present in other embodiments.

Additionally, the networks disclosed herein can be implemented, for example, using one or more processing platforms. Such a processing platform can include, by way of example, at least one processing device comprising a processor coupled to a memory.

In one or more embodiments, portions of a network as disclosed herein can illustratively include cloud infrastructure. The cloud infrastructure, in at least one such embodiment, can include a plurality of containers implemented using container host devices, and/or can include container-based virtualization infrastructure configured to implement Docker containers or other types of Linux containers.

The cloud infrastructure can additionally or alternatively include other types of virtualization infrastructure such as virtual machines implemented using a hypervisor. Additionally, the underlying physical machines include one or more distributed processing platforms that include one or more storage systems.

Such cloud infrastructure as described above can, by way of example, represent at least a portion of one processing platform. Another example of such a processing platform can include, as similarly detailed above in connection with FIG. 1, a plurality of processing devices which communicate with one another over a network. As yet another processing platform example, portions of a given processing platform in one or more embodiments can include converged infrastructure.

The particular processing platforms described above are presented by way of example only, and a given network such as network 100 can include additional or alternative processing platforms, as well as numerous distinct processing platforms in any combination, with each such platform comprising one or more computers, servers, storage devices and/or other processing devices.

Further, in accordance with one or more embodiments, processing devices and other network components can communicate with one another using a variety of different communication protocols and associated communication media.

It should again be emphasized that the embodiments described herein are presented for purposes of illustration only. Many variations may be made in the particular arrangements shown. Moreover, the assumptions made herein in the context of describing one or more illustrative embodiments should not be construed as limitations or requirements of the invention, and need not apply in one or more other embodiments. Numerous other alternative embodiments within the scope of the appended claims will be readily apparent to those skilled in the art. 

What is claimed is:
 1. A computer-implemented method comprising: determining a starting frequency channel for a frequency hopping arrangement to be used in a communication session by a designated group of devices based at least in part on a random start offset value and frequency channel spacing information; calculating a number of useable frequency channels between the starting frequency channel and a stopping frequency channel for the frequency hopping arrangement; calculating a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group; selecting the frequency channel values to be used in the communication session by the designated group of devices by iterating through frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of a random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected; and establishing the frequency hopping arrangement as a sequence of the selected frequency channel values; wherein the method is performed by at least one processing device comprising a processor coupled to a memory.
 2. The computer-implemented method of claim 1, comprising: generating the random start offset value for the frequency hopping arrangement.
 3. The computer-implemented method of claim 2, comprising: outputting the random start offset value to the other devices in the designated group of devices.
 4. The computer-implemented method of claim 1, wherein calculating the number of useable frequency channels comprises implementing a function based at least in part on one or more of (i) frequency channel bandwidth information and (ii) the frequency channel spacing information.
 5. The computer-implemented method of claim 1, comprising: calculating the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the calculated number of useable frequency channels.
 6. The computer-implemented method of claim 5, comprising: determining the calculated frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel to the other devices in the designated group of devices.
 7. The computer-implemented method of claim 5, comprising: storing, in a lookup table, the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel, wherein the lookup table is indexed with an integer.
 8. The computer-implemented method of claim 1, comprising: generating the random frequency channel selection offset value that is not a divisor of the number of useable frequency channels between the starting frequency channel and the stopping frequency channel.
 9. The computer-implemented method of claim 8, comprising: outputting the random frequency channel selection offset value to the other devices in the designated group of devices.
 10. The computer-implemented method of claim 1, wherein the frequency hopping arrangement comprises one or more usage parameters.
 11. The computer-implemented method of claim 10, wherein the one or more usage parameters comprises a requirement that each new transmission event in the communication session begins on the frequency channel value subsequent in the sequence to the frequency channel value used in an immediately preceding transmission event.
 12. The computer-implemented method of claim 10, wherein the one or more usage parameters comprises a requirement that devices in the designated group transmit one device at a time in a consistent order throughout the duration of the communication session.
 13. The computer-implemented method of claim 10, wherein the one or more usage parameters comprises a requirement that none of the devices in the designated group use any of the frequency channel values in the frequency hopping arrangement for a second time until all of the devices in the designated group have used each of the frequency channel values in the frequency hopping arrangement once.
 14. A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to carry out the method of claim
 1. 15. An apparatus comprising: at least one processing device comprising a processor coupled to a memory; the at least one processing device being configured: to determine a starting frequency channel for a frequency hopping arrangement to be used in a communication session by a designated group of devices based at least in part on a random start offset value and frequency channel spacing information; to calculate a number of useable frequency channels between the starting frequency channel and a stopping frequency channel for the frequency hopping arrangement; to calculate a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group; to select the frequency channel values to be used in the communication session by the designated group of devices by iterating through frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of a random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected; and to establish the frequency hopping arrangement as a sequence of the selected frequency channel values.
 16. The apparatus of claim 15, wherein the at least one processing device is further configured: to calculate the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the calculated number of useable frequency channels.
 17. A system comprising: a communications network; and multiple processing devices in a designated group, wherein a first of the multiple processing devices is configured to: generate a random start offset value for a frequency hopping arrangement to be used in a communication session by the designated group of processing devices; output, via the communications network, the random start offset value to the other processing devices in the designated group; generate a random frequency channel selection offset value, wherein the random frequency channel selection offset value is not a divisor of a number of useable frequency channels between a starting frequency channel and a stopping frequency channel; output, via the communications network, the random frequency channel selection offset value to the other processing devices in the designated group; calculate a frequency channel value for each of multiple useable frequency channels between the starting frequency channel and the stopping frequency channel based at least in part on the starting frequency channel and the number of useable frequency channels; and output, via the communications network, the calculated frequency channel value for each of the useable frequency channels to the other processing devices in the designated group; and wherein each of the multiple processing devices is configured to: determine the starting frequency channel based at least in part on the random start offset value and frequency channel spacing information; calculate a frequency channel step value based at least in part on a predetermined required minimum number of frequency channels and the number of devices in the designated group; select the frequency channel values to be used in the communication session by the designated group of processing devices by iterating through the frequency channel values for the useable frequency channels between the starting frequency channel and the stopping frequency channel at intervals of the random frequency channel selection offset value until a total number of frequency channel values equal to the frequency channel step value are selected; and establish the frequency hopping arrangement as a sequence of the selected frequency channel values.
 18. The system of claim 17, wherein each of the multiple processing devices is configured to store, in a lookup table, the frequency channel value for each of the useable frequency channels between the starting frequency channel and the stopping frequency channel, wherein the lookup table is indexed with an integer.
 19. The system of claim 17, wherein each of the processing devices in the designated group, when not transmitting, is capable of shifting frequency channel values in synchronization with a transmitted signal from another one of the processing devices in the designated group.
 20. The system of claim 17, wherein each of the processing devices in the designated group includes a global navigation satellite system receiver which provides an accurate absolute reference to time. 